package util.AST.Expressao;

import util.AST.Terminal.Operador;

public class ExpressaoBinaria extends Expressao {
	private Expressao ExpressaoEsquerda;
	private Operador Operador;
	private Expressao ExpressaoDireita;
	
	public ExpressaoBinaria(Expressao ExpressaoEsquerda, Operador Operador, Expressao ExpressaoDireita) {
		this.ExpressaoEsquerda = ExpressaoEsquerda;
		this.Operador = Operador;
		this.ExpressaoDireita = ExpressaoDireita;
	}

	@Override
	public String toString(int level) {
		int nextLevel = level+5;
		StringBuffer str = new StringBuffer();
		str.append("EXBI\n");
		if ( this.ExpressaoEsquerda != null ) {
			str.append(super.getSpaces(nextLevel) + "|-" + this.ExpressaoEsquerda.toString(nextLevel));
		}
		if ( this.Operador != null ) {
			str.append(super.getSpaces(nextLevel) + "|-" + this.Operador.toString(nextLevel));
		}
		if ( this.ExpressaoDireita != null ) {
			str.append(super.getSpaces(nextLevel) + "|-" + this.ExpressaoDireita.toString(nextLevel));
		}
		return str.toString();
	}

	//get e set
	public Expressao getExpressaoEsquerda() {
		return ExpressaoEsquerda;
	}

	public void setExpressaoEsquerda(Expressao expressaoEsquerda) {
		ExpressaoEsquerda = expressaoEsquerda;
	}

	public Operador getOperador() {
		return Operador;
	}

	public void setOperador(Operador operador) {
		Operador = operador;
	}

	public Expressao getExpressaoDireita() {
		return ExpressaoDireita;
	}

	public void setExpressaoDireita(Expressao expressaoDireita) {
		ExpressaoDireita = expressaoDireita;
	}
	
	
}
